23 research outputs found
Satisfiability Modulo ODEs
We study SMT problems over the reals containing ordinary differential
equations. They are important for formal verification of realistic hybrid
systems and embedded software. We develop delta-complete algorithms for SMT
formulas that are purely existentially quantified, as well as exists-forall
formulas whose universal quantification is restricted to the time variables. We
demonstrate scalability of the algorithms, as implemented in our open-source
solver dReal, on SMT benchmarks with several hundred nonlinear ODEs and
variables.Comment: Published in FMCAD 201
Revisiting the Complexity of Stability of Continuous and Hybrid Systems
We develop a framework to give upper bounds on the "practical" computational
complexity of stability problems for a wide range of nonlinear continuous and
hybrid systems. To do so, we describe stability properties of dynamical systems
using first-order formulas over the real numbers, and reduce stability problems
to the delta-decision problems of these formulas. The framework allows us to
obtain a precise characterization of the complexity of different notions of
stability for nonlinear continuous and hybrid systems. We prove that bounded
versions of the stability problems are generally decidable, and give upper
bounds on their complexity. The unbounded versions are generally undecidable,
for which we give upper bounds on their degrees of unsolvability
Proof Generation from Delta-Decisions
We show how to generate and validate logical proofs of unsatisfiability from
delta-complete decision procedures that rely on error-prone numerical
algorithms. Solving this problem is important for ensuring correctness of the
decision procedures. At the same time, it is a new approach for automated
theorem proving over real numbers. We design a first-order calculus, and
transform the computational steps of constraint solving into logic proofs,
which are then validated using proof-checking algorithms. As an application, we
demonstrate how proofs generated from our solver can establish many nonlinear
lemmas in the the formal proof of the Kepler Conjecture.Comment: Appeared in SYNASC'1
Elaboration in Dependent Type Theory
To be usable in practice, interactive theorem provers need to provide
convenient and efficient means of writing expressions, definitions, and proofs.
This involves inferring information that is often left implicit in an ordinary
mathematical text, and resolving ambiguities in mathematical expressions. We
refer to the process of passing from a quasi-formal and partially-specified
expression to a completely precise formal one as elaboration. We describe an
elaboration algorithm for dependent type theory that has been implemented in
the Lean theorem prover. Lean's elaborator supports higher-order unification,
type class inference, ad hoc overloading, insertion of coercions, the use of
tactics, and the computational reduction of terms. The interactions between
these components are subtle and complex, and the elaboration algorithm has been
carefully designed to balance efficiency and usability. We describe the central
design goals, and the means by which they are achieved
Abstract parsing for two-staged languages with concatenation
This article, based on Doh, Kim, and Schmidt’s “abstract parsing ” technique, presents an abstract interpretation for statically checking the syntax of generated code in two-staged programs. Abstract parsing is a static analysis technique for checking the syntax of generated strings. We adopt this technique for two-staged programming languages and formulate it in the abstract interpretation framework. We parameterize our analysis with the abstract domain so that one can choose the abstract domain as long as it satisfies the condition we provide. We also present an instance of the abstract domain, namely an abstract parse stack and its widening with k-cutting
PCC Framework for Program-Generators
In this paper, we propose a proof-carrying code framework for program-generators. The enabling technique is abstract parsing, a static string analysis technique, which is used as a component for generating and validating certificates. Our framework provides an efficient solution for certifying program-generators whose safety properties are expressed in terms of the grammar representing the generated program. The fixed-point solution of the analysis is generated and attached with the program-generator on the code producer side. The consumer receives the code with a fixed-point solution and validates that the received fixed point is indeed a fixed point of the received code. This validation can be done in a single pass